package org.springblade.modules.repair.dto;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.util.Date;

/**
 * @Date 10:03 2023/6/12
 * @Description {
 *   维修工单基本信息
 * }
 * @Author lsay
 **/
@Data
public class PlanSimpleInfoDTO {

	/**
	 * 工单id
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long planId;

	/**
	 * 计划时间
	 */
	private Date planDate;

	/**
	 * 电梯id
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long elevatorId;

	/**
	 * 项目id
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	private Long buildingId;

	/**
	 * 工单类型
	 */
	private Integer typeStatus;

	/**
	 * 工单状态
	 */
	private Integer status;

	/**
	 * 工单创建时间
	 */
	private Date createTime;

	/**
	 * 工单开始时间
	 */
	private Date planBeginTime;

	/**
	 * 工单结束时间
	 */
	private Date planEndTime;

	/**
	 * 工单实际耗时
	 */
	private Integer workMinute;

	/**
	 * 工单维保签字时间
	 */
	private Date maintainSignatureTime;

	/**
	 * 工单逾期日期
	 */
	private Date planOverdueDate;

	/**
	 * 电梯逾期日期
	 */
	private Date elevatorOverdueDate;

	/**
	 * 工单年审类型
	 */
	private Integer auditType;

	/**
	 * 电梯年审类型
	 */
	private Integer useType;

	/**
	 * 工单创建日期文字
	 */
	private String planDateStr;

	private String statusDesc;

	/**
	 * 维保责任组名称
	 */
	private String deptName;

	/**
	 * 电梯地址
	 */
	private String elevatorAddress;

	/**
	 * 工单类型
	 */
	private Integer workOrderType;

	public void setPlanDate(Date planDate) {
		this.planDate = planDate;
		if(ObjectUtil.isNotEmpty(planDate)){
			long betweenDay = DateUtil.between(planDate, DateUtil.date(), DateUnit.DAY);
			this.planDateStr = String.format("%s创建(至今%s天)",DateUtil.format(planDate, DatePattern.NORM_DATE_PATTERN),betweenDay);
		}
	}
}
